package com.laf.mapper;

import com.laf.model.Userinfo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author: He Changjie  on  2018-09-27
 * @description:
 */
@Repository
public interface UserMapper {

    /**
     * 通过用户名查找用户
     * @param userinfo 用户
     * @return 用户
     */
    public Userinfo findByUserName(Userinfo userinfo);

    /**
     * 更新用户的密码
     * @param userinfo 用户
     * @return 被更新的行数
     */
    public int updatePassword(Userinfo userinfo);

    /**
     * 查询所有用户
     * @return 所有用户的LIST集合
     */
    public List<Userinfo> findAll();

    /**
     * 逻辑删除一名用户
     * @param userinfo 带有用户编号的用户model
     */
    public void deleteUser(Userinfo userinfo);

    /**
     * 保存一名用户
     * @param userinfo 用户
     */
    public int saveUser(Userinfo userinfo);

    /**
     * 用户登录
     * @param userinfo 用户
     * @return 1为验证通过，0为验证失败
     */
    public Userinfo login(Userinfo userinfo);

    /**
     * 用户登录时，更新该用户最近一次登陆时间
     * @param userinfo 用户
     */
    public void updateLogTime(Userinfo userinfo);

    /**
     * 更新用户信息
     * @param userinfo 用户
     */
    public void updateUser(Userinfo userinfo);

    /**
     * 分页查询用户信息
     * @param userinfo 用户（包含查询信息）
     * @param pageNum 当前页号
     * @param pageSize 每页的尺寸
     * @return 符合条件的用户信息LIST
     */
    public List<Userinfo> selectByPage(@Param("employee") Userinfo userinfo,
                                       @Param("pageNum") int pageNum,
                                       @Param("pageSize") int pageSize);


}
